// pages/invitations/invitations.ts
import { goToPage, PAGE_INVITE_SHARE } from '../../../config/pages.js';
import { getIntegralList } from '../../../api/user.js';

Page({
  data: {
    invitationStats: {
      totalInvites: 0,
      totalRewards: 0,
    },
    invitations: [],
    page: 1,
    limit: 10,
    loading: false,
    noMore: false
  },

  onLoad() {
    this.loadInvitations();
  },

  /**
   * 加载邀请列表和统计数据
   * 使用积分记录接口 getIntegralList
   */
  loadInvitations() {
    if (this.data.loading || this.data.noMore) {
      return;
    }

    this.setData({ loading: true });

    const params = {
      page: this.data.page,
      limit: this.data.limit,
      type: 'invite_user'  // 添加 type 参数，筛选邀新相关记录
    };

    // 使用积分记录接口获取邀请数据
    getIntegralList(params)
      .then((res: any) => {
        this.handleIntegralListData(res);
      })
      .catch((err: any) => {
        console.error('加载积分记录失败:', err);
        wx.showToast({
          title: '加载失败',
          icon: 'none'
        });
        this.setData({ loading: false });
      });
  },

  /**
   * 处理积分记录数据
   * 后端已通过 type 参数筛选，直接使用返回的数据
   */
  handleIntegralListData(res: any) {
    // data 直接是数组（后端已筛选好邀新记录）
    const dataList = Array.isArray(res.data) ? res.data : (res.data.list || []);

    // 格式化数据
    const formattedList = dataList.map((item: any) => {
      // 从 mark 或 title 中提取用户信息
      let name = '用户';
      let phone = '';
      
      // 尝试从备注中提取信息，例如："邀请用户：张三 注册成功"
      const infoText = item.mark || item.title || '';
      if (infoText) {
        // 提取用户名
        const nameMatch = infoText.match(/(?:邀请|推广)(?:用户|好友)[：:]\s*([^\s,，]+)/);
        if (nameMatch && nameMatch[1]) {
          name = nameMatch[1];
        }
        
        // 提取手机号
        const phoneMatch = infoText.match(/1[3-9]\d{9}/);
        if (phoneMatch) {
          phone = phoneMatch[0];
        }
      }

      return {
        id: item.id,
        name: name,
        phone: phone ? this.formatPhone(phone) : '',
        company: '',
        status: 'completed',
        statusText: '已完成认证',
        reward: Math.abs(item.number || 100), // 积分数量
        date: this.formatDateString(item.add_time)
      };
    });

    const newList = this.data.page === 1 ? formattedList : [...this.data.invitations, ...formattedList];

    // 计算统计数据
    let totalInvites = 0;
    let totalRewards = 0;
    
    if (this.data.page === 1) {
      // 第一页时，邀请人数就是记录数
      totalInvites = dataList.length;
      // 计算总奖励（所有记录的积分总和）
      totalRewards = dataList.reduce((sum: number, item: any) => {
        return sum + Math.abs(item.number || 0);
      }, 0);
    } else {
      // 后续页面，累加计算
      totalInvites = this.data.invitationStats.totalInvites + dataList.length;
      totalRewards = this.data.invitationStats.totalRewards + dataList.reduce((sum: number, item: any) => {
        return sum + Math.abs(item.number || 0);
      }, 0);
    }

    this.setData({
      invitations: newList,
      invitationStats: {
        totalInvites: totalInvites,
        totalRewards: totalRewards
      },
      loading: false,
      noMore: dataList.length < this.data.limit,
      page: this.data.page + 1
    });
  },

  /**
   * 格式化手机号（脱敏）
   */
  formatPhone(phone: string) {
    if (!phone || phone.length !== 11) {
      return phone || '';
    }
    return phone.substring(0, 3) + '****' + phone.substring(7);
  },

  /**
   * 格式化日期字符串
   * 支持两种格式：
   * 1. 字符串格式："2025-10-19 10:41:14"
   * 2. 时间戳格式：1705305600
   */
  formatDateString(dateTime: any) {
    if (!dateTime) return '';
    
    try {
      // 如果是字符串格式，直接截取日期部分
      if (typeof dateTime === 'string') {
        // "2025-10-19 10:41:14" -> "2025-10-19"
        return dateTime.split(' ')[0];
      }
      
      // 如果是时间戳格式，转换为日期
      const timestamp = parseInt(dateTime);
      if (!isNaN(timestamp)) {
        const date = new Date(timestamp * 1000);
        const year = date.getFullYear();
        const month = String(date.getMonth() + 1).padStart(2, '0');
        const day = String(date.getDate()).padStart(2, '0');
        return `${year}-${month}-${day}`;
      }
      
      return '';
    } catch (error) {
      console.error('日期格式化失败:', error);
      return '';
    }
  },

  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    this.setData({
      page: 1,
      invitations: [],
      noMore: false,
      invitationStats: {
        totalInvites: 0,
        totalRewards: 0
      }
    });
    this.loadInvitations();
    setTimeout(() => {
      wx.stopPullDownRefresh();
    }, 1000);
  },

  /**
   * 上拉加载更多
   */
  onReachBottom() {
    this.loadInvitations();
  },

  shareInvite() {
    // 跳转到邀请分享页面
    goToPage(PAGE_INVITE_SHARE);
  },

  viewRewards() {
    wx.showToast({
      title: '查看奖励详情',
      icon: 'none',
    });
  },

  viewInvitationDetail(e: any) {
    const { id } = e.currentTarget.dataset;
    wx.showToast({
      title: `查看邀请详情 ID: ${id}`,
      icon: 'none',
    });
  },
});

